package leetcode101.greedy_strategy;

/**
 * @author Synhard
 * @version 1.0
 * @Class Code10
 * @Description ab串
 * 小明得到一个只包含a,b两个字符的字符串，但是小明不希望在这个字符串里出现a在b的左边，
 * 现在他可以将"ab"这样的子串替换成"bba",在原串中的相对位置不变，
 * 输出小明最少需要操作多少次才能让一个给定的字符串所有a都在b的右边。
 * @tel 13001321080
 * @email 823436512@qq.com
 * @date 2021-04-17 16:26
 */
public class Code10 {
    public static void main(String[] args) {
        System.out.println(abString("aabbabb"));
    }

    public static int abString(String str) {
        int ans = 0;
        StringBuffer sb = new StringBuffer(str);
        for (int i = sb.length() - 1; i > -1; i--) {
            if (sb.charAt(i) == 'a') {
                int bNums = countB(sb, i);
                ans += bNums;
                String temp = sb.substring(0, i);
                sb = new StringBuffer(temp);
                for (int j = 1; j <= bNums; j++) {
                    sb.append('b');
                    sb.append('b');
                }
                sb.append('a');
            }
        }
        return ans;
    }

    private static int countB(StringBuffer str, int index) {
        int ans = 0;
        for (int i = index; i < str.length(); i++) {
            if (str.charAt(i) == 'b') {
                ans++;
            }
        }
        return ans;
    }
}
